An LDPC code is a linear packet code proposed by Gallager in 1962. In the check matrix of the LDPC code, the number of 1 is small. The LDPC code was re-proposed by Mackay in 1996 with improvements. In addition to a check matrix, the Tanner graph (see FIG. 1) can also be adopted to represent an LDPC code. The Tanner graph is directly related to the check matrix, and consists of variable nodes, check nodes, and edges that connect them. Each check node zi is related to row i in the check matrix. Each variable node xj is related to column j in the check matrix. When bit j in the code word participates in check equation i, that is, when the element value of the position of row i and column j in the check matrix is 1, a connection line exists between the check node and the variable node in FIG. 1. The number of edges connected to a node is called the number of dimensions of this node.
The LDPC code is a high-performing error correction coding technology that is widely applied. The main features of the LDPC code are the support for iterative decoding, and its performance is approximate to the Shannon capacity limit. A cycle in the Tanner graph is a path that connects the check node and variable node, starts and ends at the same node, but does not include the same node repetitively. The length of a cycle is the number of edges. The length of the shortest cycle is called the girth of the Tanner graph. The Tanner graph of the LDPC code with limited code length inevitably has cycles. The girth of the Tanner graph, however, greatly affects the performance of the code word. The quasi-cyclic LDPC code obtains the check matrix by extending the exponential matrix through the extension factor, and features simple storage and flexible support for various code lengths.
Currently, the quasi-cyclic LDPC code based on cyclic shift matrix is commonly used. Its check matrix Hm×n may be viewed as obtained by extending the mother matrix M(H) whose size is mb×nb through extension factor z, wherein: n=z×nb, m=z×mb, is an integer, n indicates the code length, and m indicates the number of check bits in the code word. During extension, element 1 in M(H) is replaced by the z×z right cyclic shift matrix, and element 0 is replaced by the z×z zero matrix. Each cyclic unit matrix in Hm×n may be specified by its right cyclic shift amount. The mother matrix information and cyclic shift information can be integrated into a base check matrix, that is, exponential matrix E(H). 0 in M(H) is replaced by −1 to define a z×z zero matrix. Element 1 is replaced by the cyclic shift amount. E(H) can be directly extended through the extension factor to obtain Hm×n. Based on a quasi-cyclic LDPC code, a check matrix can be obtained by extending the mother matrix or exponential matrix through the extension factor, which features simple storage and flexible support for various code lengths.
In current implementations, however, a quasi-cyclic LDPC code supports increase of code lengths only by integral multiples, or is of numerous limitations during construction. Consequently, the performance of an LDPC code supported by a matrix at each required code length is far different from the performance of the LDPC code in independent design.